The increasing computing power of personal computer systems has given rise to more complex and powerful system applications. One particular type of application gaining in popularity are those applications that model objects in a three dimensional (3D) space. 3D objects are commonly modeled as a collection of joined polygons (typically triangles) defined by vertex positions and attributes. Display images are created by projecting the objects onto a two dimensional viewing plane according to a rendering "pipeline." For an example of rendering pipelines see Computer Graphics by Foley et al. pp. 806-809.
The end result of the rendering process is a collection of pixels for each surface of the projected polygon. The particular value of a pixel depends upon the rendering method used. One method of rendering polygons is to generate the same color for all the pixels of the polygon. This provides for fast rendering but results in an image that can lack realism and/or detail. For increased realism polygons can be uniformly shaded (called flat shading) according to a shading scheme. This adds a degree of realism but can produce abrupt color change at polygon boundaries. A common method of providing realistic shading effects is interpolating color intensity across the surface of the polygon according to the vertex values; commonly referred to as Gouraud shading.
Another polygon rendering method fills the polygon surface, not with an interpolated color, but with a selected one of many stored texture maps. Each texture map includes a texture composed of a number of pixel values (also called "texels") each having a texture map address (commonly given by texture coordinates u and v). A selected texture is mapped to a given polygon surface by assigning a texture map address to each vertex of the polygon. The remaining pixels of the polygon are mapped to corresponding texture addresses according to a texture mapping scheme. "Affine" texture mapping makes no adjustment in texture map address according to the depth (z position) of the polygon surface, and so can result in a polygon surface that appears warped or otherwise distorted to the viewer. To compensate for the z position of a given polygon pixel "perspective" texture mapping is used. Perspective texture mapping interpolates the texture address across the polygon surface, typically by taking advantage of the fact that the gradient of the texture address divided by the depth (d(u/z) and d(v/z)) is linear with respect to the viewing plane. See "Under the Hood: Perspective Texture Mapping Part I: Foundations", Game Developer, April/May 1995 by Chris Hecker.
The Hecker article also sets forth a software perspective texture mapper. Software solutions to texture mapping can require considerable host processor resources, however. In order to free up system resources it is known to offload portions of the rendering pipeline onto specialized graphics accelerator hardware.
At the same time more and more image rendering tasks are being offloaded from the host processor to a graphics accelerator chip, there is conflicting drive to provide smaller and smaller die sizes in order to create a more cost effective product.
It would be desirable, therefor, to provide a graphics accelerator architecture for rendering polygons with the most efficient use of the circuits therein.